      1  import java.awt.Graphics2D;

      2  import java.awt.Rectangle;

      3  import java.awt.geom.Ellipse2D;

      4  import java.awt.geom.Line2D;

      5  import java.awt.geom.Point2D;

      6

      7  /**

      8     A car shape that can be positioned anywhere on the screen.

      9  */

     10  public class Car

     11  {

     12     private int xLeft;

     13     private int yTop;

     14

     15     /**

     16        Constructs a car with a given top left corner.

     17        @param x the x coordinate of the top left corner

     18        @param y the y coordinate of the top left corner

     19     */

     20     public Car(int x, int y)

     21     {

     22        xLeft = x;

     23        yTop = y;

     24     }

     25

     26     /**

     27        Draws the car.

     28        @param g2 the graphics context

     29     */

     30     public void draw(Graphics2D g2)

     31     {

     32        Rectangle body = new Rectangle(xLeft, yTop + 10, 60, 10);

     33        Ellipse2D.Double frontTire

     34           = new Ellipse2D.Double(xLeft + 10, yTop + 20, 10, 10);

     35        Ellipse2D.Double rearTire

     36           = new Ellipse2D.Double(xLeft + 40, yTop + 20, 10, 10);

     37

     38        // The bottom of the front windshield

     39        Point2D.Double r1 = new Point2D.Double(xLeft + 10, yTop + 10);

     40        // The front of the roof

     41        Point2D.Double r2 = new Point2D.Double(xLeft + 20, yTop);

     42        // The rear of the roof

     43        Point2D.Double r3 = new Point2D.Double(xLeft + 40, yTop);

     44        // The bottom of the rear windshield

     45        Point2D.Double r4 = new Point2D.Double(xLeft + 50, yTop + 10);

     46

     47        Line2D.Double frontWindshield = new Line2D.Double(r1, r2);

     48        Line2D.Double roofTop = new Line2D.Double(r2, r3);

     49        Line2D.Double rearWindshield = new Line2D.Double(r3, r4);

     50

     51        g2.draw(body);

     52        g2.draw(frontTire);

     53        g2.draw(rearTire);

     54        g2.draw(frontWindshield);

     55        g2.draw(roofTop);

     56        g2.draw(rearWindshield);

     57     }

     58  }